package com.tedu.api.ee;

import org.junit.Test;

import java.io.FileInputStream;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 流--传输数据---传输数据过程绝对不能出错【处理手段】
 * 标准流结合异常---标准IO
 *
 * 异常
 * JAVA面向对象语言，程序中所有出现的错误，定义为对象【处理对应错误】
 *
 * Throwable 顶级异常超类
 *
 * Exception异常，描述程序级别的错误---有解决方案
 *              编译期：--RunTimeException异常表示类--
 *                     FileOutputStream创建对象--波浪线--抛出方法之外
 *             检查异常：通常都是编译器检查处理，程序直接报错，抛出
 *             解决方案：①捕获异常（*）
 *                     ②抛出异常  ---抛出方法之外---打印控制台
 *
 *              运行期：控制台直接显示异常对象【异常对象名字，产生原因】
 *                非检查异常：控制台直接输出异常对象名称RunTimeException异常表示类
 *
 *              最后了解 【throw与throws---RunTimeException】
 *
 * Error错误：描述系统级别的错误--出现---程序宕机
 *           非常低--->递归问题--->
 *
 *
 */
public class EE {
/**
 * Error  错误---无解 程序严重错误
 * 模拟：方法掉方法---栈溢出错误
 *
 * ------程序宕机-----
 * while(true){
 *     拼接字符串对象
 * }
 */
  /*  public static void method(){
            method();
    }
    @Test
    public void testError(){
        EE.method();
    } */

/**
 * Exception异常：检查异常【出现编译器】---代码报波浪线
 *                两种处理手段：①捕获异常
 *                         语法：try{
 *                              怀疑代码可能有异常或者提示异常
 *                                 }catch(小异常名字 e){
 *                              e.printStacktrace; 打印异常信息
 *                                 }catch(中异常 e){
 *                              e.printStacktrace; 打印异常信息
 *                               }catch(大异常 e){
 *                              e.printStacktrace; 打印异常信息
 *                               }finally{
 *                                   一定执行代码块
 *                               }
 *
 *
 *                            ②抛出异常  throws 异常的名字【并未解决】
 *                  考试题：throw与throws的区别
 *                  异常关键字：throw
 *  throws
 *
 *             非检查异常【出现在运行期】--代码无错误---控制台
 * --------------
 * 异常：FileNotFoundException    文件不存在异常
 * 产生原因：路径写错、文件名写错
 * 异常：NullPointerException    空指针异常
 * 产生原因：获取字符串为空，数组：值为空，集合：元素为空【存在null值】
 * 异常：StringIndexOutOfBoundsException  字符串下标越界异常
 * 产生原因：字符串下标没有对应的字符
 * 异常：NumberFormatException  数字转换异常
 */
@Test
public void testHomeWork1(){
    //1.IllegalArgumentException异常

    DateTimeFormatter dtf= DateTimeFormatter.ofPattern("null");
    //2.DateTimeException异常

    LocalDateTime c=LocalDateTime.of(2024,24,30,17,42);
    // 3.IOException异常

    FileInputStream fis=null;
    try {
        fis.read();
        fis=new FileInputStream("fos.txt");
    }
    catch(IOException e){
        e.printStackTrace();
    }

    //4.NoSuchElementException异常

    List<String> list=new ArrayList<>();
    Iterator<String> it=list.iterator();

    String next=it.next();

    //5.ClassCastException异常
    Object o=new Object();
    String s= (String)o;


}

}
